package com.bestcem.xm.label.grpc.service.param;

import com.alibaba.fastjson.annotation.JSONField;
import com.bestcem.xm.common.core.constant.RegTypes;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.List;

/**
 * @author ming.xue <ming.xue@idiaoyan.com>
 * @desc 联系人参数
 * @date 2021-05-18
 *
 * @see LabelMembersParam
 */
@Getter
@Setter
public class MemberParam {
    /**
     * 联系人标识
     */
    @NotNull(message = "联系人标识不能为空")
    @Pattern(regexp = RegTypes.OBJECT_ID, message = "联系人标识格式错误")
    private String id;

    /**
     * 姓名
     */
    private String name;

    /**
     * 昵称
     */
    private String nickname;

    /**
     * 性别
     */
    private String gender;

    /**
     * [省份, 城市, 区县, 街道信息]
     */
    private List<String> address;

    /**
     * 手机号
     */
    private String mobile;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 出生日期
     */
    private String birthday;

    /**
     * 年龄
     */
    private Integer age;

    /**
     * 所属组织
     */
    private String store;

    /**
     * 用户状态
     */
    private Integer status;

    /**
     * 联系人编号
     */
    @JsonProperty("member_no")
    @JSONField(name="member_no")
    private String memberNo;

    /**
     * 联系人类型
     */
    @JsonProperty("member_type")
    @JSONField(name="member_type")
    private Integer memberType;

    /**
     * 微信OpenID
     */
    @JsonProperty("openid")
    @JSONField(name="openid")
    private String openId;

    /**
     * 微信AppID
     */
    @JsonProperty("appid")
    @JSONField(name="appid")
    private String appId;

    /**
     * 支付宝ID
     */
    @JsonProperty("alipay_user_id")
    @JSONField(name="alipay_user_id")
    private String alipayUserId;

    /**
     * 答题率
     */
    @JsonProperty("answer_rate")
    @JSONField(name="answer_rate")
    private Float answerRate = 0f;

    /**
     * 答题完成率
     */
    @JsonProperty("submit_rate")
    @JSONField(name="submit_rate")
    private Float submitRate = 0f;

    /**
     * 收到问卷数
     */
    @JsonProperty("receive_total_count")
    @JSONField(name="receive_total_count")
    private Integer receiveTotalCount = 0;

    /**
     * 开始答题问卷数
     */
    @JsonProperty("start_answer_count")
    @JSONField(name="start_answer_count")
    private Integer startAnswerCount = 0;

    /**
     * 标签值
     */
    @Valid
    @JsonProperty("labels")
    @JSONField(name="labels")
    private List<LabelValueIdParam> labelValueIds;

    /**
     * 扩展字段列表
     */
    @Valid
    @JsonProperty("field_val_list")
    @JSONField(name="field_val_list")
    private List<ExtendFieldParam> fieldValList;

    /**
     * 外部编号
     */
    @JsonProperty("out_no")
    @JSONField(name = "out_no")
    private String outNo;
}
